Video technology is very popular for showing moving images to consumers. Video is a sequence of still images representing scenes of a motion picture that can be electronically captured, recorded, processed, stored, transmitted, and reconstructed. Video can be stored in digital and analog storage formats. Digital storage formats include DVDs, QuickTime, and MPEG-4. Analog storage formats include VHS and Betamax videotapes.
Video compression refers to a data compression process of encoding and reducing the quantity of data used to represent video images. Video compression is typically performed prior to sending and the later decoding of video data to a destination. Video compression standards include MPEG-2, H263, MPEG-4 Part 2, and H264/AVC. The H264 standard provides high quality video at low bit rates compared to previous standards.
Video compression can be accomplished because video data contains spatial and temporal redundancies. These redundancies make uncompressed video streams inefficient. In one technique, video compression reduces spatial redundancies through intraframe compression by registering differences between parts of a single frame. Likewise, video compression reduces the temporal redundancies through interframe compression by registering differences between frames.
Video resolutions include standard definition and High Definition (HD) video. HD video generally refers to any video system of higher resolution than standard-definition video. HD video resolutions include 1280×720 (720p) or 1920×1080 (1080i or 1080p). HD video results in better visual clarity, but occupies more memory storage space.
In video encoding, a system's maximum rate of data transfer is its digital bandwidth. In other words, bandwidth is the amount of data a computer can transfer data over a data channel. Bandwidth can be measured as a bit rate, expressed in bits per second, denoting the maximum bit rate that data can be transferred through a connection. In computer networking, bandwidth management is a process of measuring and controlling the amount of data communicated across a network channel, to avoid filling the channel to its capacity, which would result in network congestion and poor performance. As such, bandwidth savings help prevent poor video performance.
In a conventional video decoder, an encoded bitstream is input into the system. In one technique, the encoded bitstream can be entropy decoded to form a residual. The residual can then be inverse-scanned, inverse-quantized, and inverse-transformed. Then, a motion compensation module uses previous or future frames to generate an inter macroblock predictor, or a spatial compensation module uses neighboring macroblocks to generate an intra macroblock predictor. The MPEG4/H263 standard only supports inter predictors, whereas the H264 standard supports both inter and intra predictors. The predictor macroblock can be added to the scanned, quantized, and transformed residual. This result can be filtered and then outputted as a reconstructed and decoded macroblock.
The inter macroblock predictor can be formed from different sized blocks, including integer multiples of variable sized non-overlapping blocks called partitions and sub-partitions. MPEG4/H263 supports either one 16×16 macroblock or four 8×8 blocks or partitions. H264 supports one 16×16 macroblock, two 16×8, two 8×16, or four 8×8 blocks or partitions. H264 further supports each 8×8 partition to be sub-divided into one 8×8 partition, two 8×4 sub-partitions, two 4×8 or four 4×4 sub-partitions. Each partition or sub-partition can have a separate motion vector that describes which reference frame to use, and the location in the reference frame to gather the predictor partition or sub-partition. These reference frames can be temporarily stored and organized in a decoded picture buffer in a memory. The decoded picture buffer can provide pictures or frames to a decoding pixel processor (i.e., a decoder). A video decoder maintains several buffers in memory that the decoder reads from and writes to during the course of decoding a video bitstream. These reads and writes include video bitstream read/write, a system bitstream read/write, a command buffer read/write, and motion vectors read/write. The sending and receiving of referenced decoded portions of video between the decoded picture buffer and the decoding pixel processor is often the largest consumer of bandwidth.
The decoded portion of video can be referenced by the decoder once, or referenced multiple times. The more often a portion of video is referenced, the more bandwidth it takes up. If the portion of video is referenced frequently, more bandwidth is consumed than if the decoded video portion is not referenced frequently. This is because the decoded video portion is transmitted from the decoded picture buffer to the decoder each time the decoded video portion is referenced, consuming bandwidth during each transmission.